package com.liuyfly.leetcode.questions;

import lombok.extern.slf4j.Slf4j;

/**
 * @author liuyangfang at 2022-08-23 11:38
 */
@Slf4j
public class Question1991 {
    /**
     * 给你一个下标从 0 开始的整数数组 nums ，请你找到 最左边 的中间位置 middleIndex （也就是所有可能中间位置下标最小的一个）。
     * 中间位置 middleIndex 是满足 nums[0] + nums[1] + ... + nums[middleIndex-1] ==
     * nums[middleIndex+1] + nums[middleIndex+2] + ... + nums[nums.length-1] 的数组下标。
     * 如果 middleIndex == 0 ，左边部分的和定义为 0 。类似的，如果 middleIndex == nums.length -
     * 1 ，右边部分的和定义为 0 。 请你返回满足上述条件 最左边 的 middleIndex ，如果不存在这样的中间位置，请你返回 -1 。 <br/>
     * <br/>
     * 链接：https://leetcode.cn/problems/find-the-middle-index-in-array
     */
    public static int findMiddleIndex(int[] nums) {
        if (nums.length == 1) {
            return 0;
        }
        for (int i = 0; i < nums.length; i++) {
            int sum1 = sum(nums, 0, i - 1);
            int sum2 = sum(nums, i + 1, nums.length - 1);
            if (sum1 == sum2) {
                return i;
            }
        }
        return -1;
    }

    public static int sum(int[] nums, int start, int end) {
        int result = 0;
        if (start > nums.length - 1 || end < 0) {
            return 0;
        }
        for (int i = start; i <= end; i++) {
            result += nums[i];
        }
        return result;
    }

    public static void main(String[] args) {
        int[] nums = { 4, 0 };
        int index = findMiddleIndex(nums);
        log.info("index:{}", index);
    }
}
